<script>
	import TIM from 'tim-js-sdk'; // web环境使用
	// import TIM from 'tim-wx-sdk'; //  小程序环境使用
	import TIMUploadPlugin from 'tim-upload-plugin';
	// import COS from "cos-js-sdk-v5";
	export default {
		mounted() {
			/**官网有很多关于关于sdk 其他的监听方法（比如：有新的消息，用户资料更新等等）
			 * 详情可对照： https://imsdk-1252463788.file.myqcloud.com/IM_DOC/Web/SDK.html
			 * 监听的含义：服务端发生了数据变更---前端全局可以接收到变更通知--前端就可以自动触发某个事件来更新相应数据
			 * */
			 let options = {
			   SDKAppID: 1400553498 // 接入时需要将 0 替换为您的云通信应用的 SDKAppID
			 };
			 // 创建 SDK 实例，`TIM.create()`方法对于同一个 `SDKAppID` 只会返回同一份实例
			 let tim = TIM.create(options); // SDK 实例通常用 tim 表示
			 
			 // 设置 SDK 日志输出级别，详细分级请参见 setLogLevel 接口的说明
			 tim.setLogLevel(1); // 普通级别，日志量较多，接入时建议使用
			 // tim.setLogLevel(1); // release级别，SDK 输出关键信息，生产环境时建议使用
			 
			 // 注册腾讯云即时通信IM上传插件
			 // tim.registerPlugin({'tim-upload-plugin': TIMUploadPlugin});
			 tim.registerPlugin({'tim-upload-plugin': TIMUploadPlugin});
			// 登录成功后会触发 SDK_READY 事件，该事件触发后，可正常使用 SDK 接口
			this.tim.on(this.$TIM.EVENT.SDK_READY, this.onReadyStateUpdate, this);
			// 收到新消息
			this.tim.on(this.$TIM.EVENT.MESSAGE_RECEIVED, this.onReceiveMessage);
			// 会话列表更新
			this.tim.on(this.$TIM.EVENT.CONVERSATION_LIST_UPDATED, event => {
				this.$store.commit("updateConversationList", event.data);
			});
		},
		methods: {
			onReadyStateUpdate({
				name
			}) {
				const isSDKReady = name === this.$TIM.EVENT.SDK_READY ? true : false;
				//自动监听并更新 sdk 的ready 状态 （未登录是 notReady  登录后是ready）
				this.$store.commit("toggleIsSDKReady", isSDKReady);
				//sdk ready 后  肯定完成了登录操作    这里可以获取用户存储在im的基础信息/离线消息/黑名单列表
			},

			onReceiveMessage({
				data: messageList
			}) {
				// this.handleAt(messageList);
				this.$store.commit("pushCurrentMessageList", messageList);
			},
			//根据消息列表请求聊天对象的用户信息 并完成数据拼接

		},
		onLaunch: function() {
			//#ifdef APP-PLUS  
			
			   	console.log('App Launch')
			   			let info = plus.push.getClientInfo();
			   					console.log(info);
			   					uni.setStorageSync('cid',info)
			   						/* 5+  push 消息推送 ps:使用:H5+的方式监听，实现推送*/
			   					plus.push.addEventListener("click", function(msg) {
			   						console.log(JSON.stringify(msg));
			   						console.log(msg.payload);
			   							//这里可以写跳转业务代码
			   					}, false);
			   						// 监听在线消息事件    
			   					plus.push.addEventListener("receive", function(msg) {
			   						// plus.ui.alert(2);  
			   						//这里可以写跳转业务代码
			   						console.log("recevice:" + JSON.stringify(msg))
			   					}, false);
			   //#endif  
			//#ifdef APP-PLUS
			      // console.log(plus.runtime.version);
			      plus.runtime.getProperty(plus.runtime.appid,(wgtinfo)=>{
			      console.log(wgtinfo);
			      console.log(plus.os.name);   //版本号
			      // console.log(222222)
			          uni.request({    
			              url: "http://jk85472adeg.htjy668.cn/index/index/banben",  
			              data: { //升级检测数据  
			         "version": wgtinfo.versionCode,
			         "name": wgtinfo.name,
			         'os':plus.os.name
			           
			        },  
			        method: "POST",
			        dataType: "json",  
			        header: {
			         'Content-Type': 'application/x-www-form-urlencoded',
			        },   
			              success: (res) => {  
			         // console.log(111111)
			          console.log(res)  
			         if (res.statusCode == 200) {
			          var resdata = res.data;
			           
			           
			          if ( resdata.code == 1) {
			              uni.showModal({ //提醒用户更新  
			                  title: "更新提示",   
			                  content: '您的程序有新版本，点击确认更新',   
			                  success: (res) => {  
			                      if (res.confirm) {  
			                          plus.runtime.openURL(resdata.url);  
			                      }  
			                  }  
			              })  
			          }  else{
			            console.log(35)
			          }
			         }else{
			           console.log(12)
			         }
			                 
			              }  
			          })  
			      
			      })
			      //#endif
			let uid = uni.getStorageSync('uid');
			let token = uni.getStorageSync('token');
			if (!uid || !token) {

				uni.reLaunch({
					url: "/pages/login/login",
					success: () => {
						plus.navigator.closeSplashscreen();
					},
				})
			} else {
				this.$.ajax(1, 'post', 'index/checktokens', {
					uid: uni.getStorageSync('uid'),
					token: uni.getStorageSync('token')
				}, (res) => {
					console.log(res)
					if (res.code == 9) {
						uni.reLaunch({
							url: "/pages/login/login",
							success: () => {
								plus.navigator.closeSplashscreen();
							},
						})
					} else {
						plus.navigator.closeSplashscreen();
						this.$.ajax(1,"post","/index/getsigns",{
							uid:uni.getStorageSync('uid')
						},(res)=>{
							if(res.code ==1){
								let promise = this.tim.login({
									userID: uni.getStorageSync('uid').toString(),
									userSig: res.sign
								});
								promise.then((res) => {
									//登录成功后 更新登录状态
									this.$store.commit("toggleIsLogin", true);
									//自己平台的用户基础信息
									// uni.setStorageSync('userInfo', JSON.stringify(userInfo))
									//tim 返回的用户信息
									uni.setStorageSync('userTIMInfo', JSON.stringify(res.data))
									console.log(res.data)
									
								}).catch((err) => {
									console.warn('login error:', err); // 登录失败的相关信息
								});
							}
						})
					}
				})
			}
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>

<style lang="scss">
	/*每个页面公共css */
	@import '@/assets/css.css';
	@import "uview-ui/index.scss";

	html,
	body {
		background-color: #f6f6f6 !important;
	}

	uni-checkbox-group {
		width: 100% !important;
	}

	uni-checkbox-group uni-label {
		width: 33% !important;
		display: inline-flex;
	}

	/*checkbox 选项框大小  */
	uni-checkbox .uni-checkbox-input {
		border: 2rpx solid #EEEEEE;
		border-radius: 50%;
		background-color: transparent;
		width: 26rpx;
		height: 26rpx;
	}

	/*checkbox选中后样式  */
	uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked {
		position: relative;
		border: 2rpx solid #E23C63 !important;
	}

	/*checkbox选中后图标样式  */
	uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked::before {
		content: '';
		width: 50%;
		height: 50%;
		position: absolute;
		left: 50%;
		top: 50%;
		transform: translate(-50%, -50%);
		background-color: #E23C63 !important;
		border-radius: 50%;
	}
</style>
